import request from '@/config/axios'

/** 导入任务类型 */
export enum ImportTaskType {
  GROUP_NUMBER = 'GROUP_NUMBER', // 群号
  // 可以根据需要添加更多类型
}

/** 导入任务状态 */
export enum ImportTaskStatus {
  QUEUED = 0, // 排队中
  PROCESSING = 1, // 进行中
  COMPLETED = 2, // 已完成
  FAILED = 3, // 失败
}

/** 导入任务信息 */
export interface ImportTask {
  id: number; // 任务ID
  type: string; // 任务类型
  businessId: number; // 业务ID
  taskName: string; // 任务名称
  fileName: string; // 文件名
  fileSize: number; // 文件大小
  status: number; // 状态：0-排队中，1-进行中，2-已完成，3-失败
  totalCount: number; // 总数据条数
  processedCount: number; // 已处理数
  successCount: number; // 成功数
  failedCount: number; // 失败数
  duplicateCount: number; // 重复数
  startTime?: number; // 开始时间
  endTime?: number; // 结束时间
  params: string; // 参数JSON字符串
  errorMsg?: string; // 错误信息
  createTime: number; // 创建时间
}

/** 创建导入任务请求参数 */
export interface CreateImportTaskReq {
  type: string; // 任务类型
  businessId: number; // 业务ID
  taskName: string; // 任务名称
  fileName: string; // 文件名
  fileSize: number; // 文件大小
  params: string; // 参数JSON字符串  比如导入群号池,携带池子id"{\"poolId\":1}"
}

// 导入任务 API
export const ImportTaskApi = {
  // 创建导入任务
  createImportTask: async (data: CreateImportTaskReq) => {
    return await request.post({ url: `/yunkong/import/create-task`, data })
  },

  // 上传文件
  uploadFile: async (taskId: number, file: File) => {
    const formData = new FormData()
    formData.append('taskId', taskId.toString())
    formData.append('file', file)
    return await request.post({ 
      url: `/yunkong/import/upload`, 
      data: formData,
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },

  // 查询导入任务
  getImportTask: async (id: number) => {
    return await request.get({ url: `/yunkong/import/get/${id}` })
  },

  // 根据业务ID查询最新任务
  getLatestTaskByBusinessId: async (businessId: number) => {
    return await request.get({ url: `/yunkong/import/get-by-business-id?businessId=${businessId}` })
  }
}



